package com.wgy.day40SQL.SQL分类;
/*
DBA:数据库管理员
DCL:管理用户,授权
1.管理用户:
   1.添加用户
      语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'
           比如: CREATE USER 'xiaoyun'@'localhost' IDENTIFIED BY '123'
                CREATE USER 'xiaoyun'@'%' IDENTIFIED BY '123'
   2.删除用户
       语法:drop user '用户名'@'主机名';
           比如: 删除localhost小云
                DROP USER 'xiaoyun'@'localhost';

   3.修改用户密码
        语法1:UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER ='用户名';
        语法2:set password for '用户名'@'主机名' = password ('新密码');
            比如: 修改小云的密码为abc
                 1.UPDATE USER SET PASSWORD = PASSWORD('abc') WHERE USER ='xiaoyun';
                 2.SET PASSWORD FOR 'xiaoyun'@'%' = PASSWORD ('abc');

        mysql中忘记了root用户的密码:
             1.cmd  --> net stop mysql 停止mysql的服务  (需要使用管理员运行该cmd)
             2.使用无验证方式启动mysql服务: mysql --skip-grant-tables
             3.打开新的cmd窗口直接输入mysql命令,敲回车,就可以登录成功
             4.use mysql;
             5.update user set password =passWord('新密码') where user='root';
             6.关闭两个窗口
             7,打开任务管理器,手动结束mysqld.exe 的进程
             8.启动mysql服务
             9.使用新密码登录

   4.查询用户:
            -- 1.切换到mysql数据库
            USE mysql;
            -- 2.查询表
            SELECT * FROM USER;
       注意: 通配符%表示:可以在任意主机上使用用户名登录数据库

2.授权管理:
     1. 查询权限
        语法: SHOW GRANTS  FOR  '用户名'@'主机名';
             比如: SHOW GRANTS  FOR  'xiaoyun'@'%';
                  SHOW GRANTS  FOR  'root'@'%' ;
     2. 授予权限
        语法: grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
              比如: GRANT SELECT,update,delete ON db3.`account` TO 'xiaoyun'@'%';
              比如: 给张三授予所有权限, 在任意数据库任意表上
                   GRANT ALL ON *.* TO 'zhangsan'@'localhost';

     3. 撤销权限
        语法: revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
             比如:revoke select,update,delete on db3.`account` from 'xiaoyun'@'%';
             比如:给张三撤销所有权限
                 REVOKE ALL ON *.* FROM 'zhangsan'@'localhost';

*/
public class Demo06DCL {
}
